用数组作为iloc输入对pandas数据框架进行索引 您所在的位置:网站首页 php 数组添加数据 用数组作为iloc输入对pandas数据框架进行索引

用数组作为iloc输入对pandas数据框架进行索引

2023-03-28 13:02| 来源: 网络整理| 查看: 265

我有一个pandas数据框架(df),我想对其进行索引,只显示列内总和不为零的列。 我正在使用.to_numpy().nonzero()方法来创建一个非零索引的元组。我检查了pandas.DataFrame.iloc文档,发现只有数组/int的列表可以用来做索引,所以我把这个非零索引的元组改为列表。

import pandas as pd #... df = pd.read_table(f) df_sum = df.sum(axis = 0) df_no_0_tuple = df_sum.to_numpy().nonzero() #--> prints (array([ 7, 8, 9, 10, 11, 25, 26, 27, 28, 29, 31, 32, 36], dtype=int64),) print(type(df_no_0_tuple)) #--> prints "" df_no_0 = list(df_no_0_tuple) print(type(df_no_0)) #--> prints "" print(df_no_0) #--> prints [array([ 7, 8, 9, 10, 11, 25, 26, 27, 28, 29, 31, 32, 36], dtype=int64)] df_final = df.iloc[:, df_no_0] print[df_final]

正如标题中提到的。如果我使用df_no_0作为iloc输入,我得到的错误。"ValueError:缓冲区有错误的维数(预期为1,得到2)" 这里的问题是。df_no_0列表中是否也包括 "dtype=int64 "的部分,然后导致尺寸错误(预期1,得到2)?如果是这样,有没有办法在使用列表转换时删除或甚至不创建类型信息?

如果我直接使用to_numpy().nonzero()中的元组,我会得到错误。"pandas.core.indexing.IndexingError:太多的索引器"。我认为这里的错误可能是由于现在有三个索引器在元组内被逗号", "隔开,与列表相比,造成了不同的错误。 对我来说,问题仍然存在。 我如何使用to_numpy().nonzero()的输出对数据框架进行正确的索引,或者我如何将该输出转化为.iloc索引的可行输入?

BTW:如果我只是以列表格式手动输入to_numpy().nonzero()的输出,索引就会如期进行。这只是在事先不知道其非零列的情况下对多个文件进行索引的繁琐之处。

非常感谢任何帮助!

提前感谢您!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有